package br.com.delogic.simuladorbancario.main.business;

import br.com.delogic.simuladorbancario.main.model.Agencia;
import java.util.ArrayList;
import java.util.List;

/**
 * @author rodrigo
 */
public class AgenciaBusiness {
 
   private final List agencias = new ArrayList(); 
//criando um arraylist pois é mais eficiente que vetor
   
   private static AgenciaBusiness agenciaBusiness; //atributo statico
   
   private AgenciaBusiness(){ //contrutor singleton
       
       for(int i = 0 ; i < 5; i++){          
           Agencia agencia = new Agencia();
           //instanciando um objeto agencia
           agencia.setCodigo(12*i);
           agencia.setNome("teste " + i);
           
           agencias.add(agencia);
           //adicionando o objeto agencia ao arraylist agencias
       }
       
   }
   
   public static AgenciaBusiness getInstance(){
       if(agenciaBusiness == null){
           agenciaBusiness = new AgenciaBusiness();
        }
           return agenciaBusiness;
   }
    
    public void cadastrarAgencia(Agencia agencia){
        agencias.add(agencia);
        
    }
    
    public Agencia consultarAgencia(int codigo){
        
        for(int i = 0; i < agencias.size(); i++){
            Agencia ag = (Agencia) agencias.get(i); //fazendo cast 
            if(ag.getCodigo() == codigo)
                //return  (Agencia) agencias.get(i); //fazendo cast (transformando lista agencias para agencia
                return ag;
        }
        return null;
    }
    
    public boolean desativaAgencia(int agencia){
        for(int i = 0; i < agencias.size(); i++){
            Agencia ag = (Agencia) agencias.get(i);
            if(ag.getCodigo() == agencia){
                ag.setAtiva(false);
                return true;
            }                
        }
        return false;
    }
    
    public boolean reativaAgencia(int codigo){
        Agencia agencia = consultarAgencia(codigo);//retorna codigo da agencia ou nulo
        
        if(agencia != null){
            agencia.setAtiva(true);
            return true;
        }
            
        return false;
    }
}
